package com.qzsoft.zhjd.materiel.modules.materieldata.mapper;

import java.util.Date;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.qzsoft.zhjd.materiel.modules.materieldata.dto.MaterielDataCountDto;
import com.qzsoft.zhjd.materiel.modules.materieldata.dto.MaterielDataCountTypeListDto;
import com.qzsoft.zhjd.materiel.modules.materieldata.dto.MaterielDataDetailsDto;
import com.qzsoft.zhjd.materiel.modules.materieldata.dto.MaterielDataForCategoryChartDto;
import com.qzsoft.zhjd.materiel.modules.materieldata.dto.MaterielDataForItemChartDto;
import com.qzsoft.zhjd.materiel.modules.materieldata.dto.MaterielDataListDto;
import com.qzsoft.zhjd.materiel.modules.materieldata.entity.MaterielDataEntity;

/**
 * @ClassName MaterielDataMapper
 * @Description 物料数据数据库操作接口
 * @author linhuawei
 * @since 2021-09-01
 */
@Mapper
public interface MaterielDataMapper extends BaseMapper<MaterielDataEntity> {

    /**
     * @Title queryDto
     * @Description 获取过磅列表分页数据
     * @param page   分页条件
     * @param params 查询条件
     * @return 过磅列表分页数据
     */
    public IPage<MaterielDataListDto> queryDto(IPage<MaterielDataListDto> page,
            @Param("params") Map<String, Object> params);

    /**
     * @Title queryDto
     * @Description 获取过磅列表数据
     * @param params 查询条件
     * @return 过磅列表数据
     */
    public List<MaterielDataListDto> queryDto(@Param("params") Map<String, Object> params);

    /**
     * @Title countDto
     * @Description 获取统计信息
     * @param params 查询条件
     * @return 统计信息
     */
    public MaterielDataCountDto countDto(@Param("params") Map<String, Object> params);

    /**
     * @Title countByWeightDataType
     * @Description 根据过磅类型统计
     * @param params 查询条件
     * @return 统计信息
     */
    public List<MaterielDataCountTypeListDto> countByWeightDataType(@Param("params") Map<String, Object> params);

    /**
     * @Title getDetailsById
     * @Description 获取磅单详情数据
     * @param id 磅单主键
     * @return 磅单详情数据
     */
    public MaterielDataDetailsDto getDetailsById(@Param("id") String id);

    /**
     * @Title countForItemChart
     * @Description 收/发料汇总图表对象
     * @param params 查询条件
     * @return 收/发料汇总图表对象
     */
    public List<MaterielDataForItemChartDto> countForItemChart(@Param("params") Map<String, Object> params);

    /**
     * @Title countForItemChart
     * @Description 收/发料汇总图表对象
     * @param params 查询条件
     * @return 收/发料汇总图表对象
     */
    public List<MaterielDataForCategoryChartDto> countForCategoryChart(@Param("params") Map<String, Object> params);

    /**
     * @Title getLastTime
     * @Description 获取最新一条数据的时间
     * @param params 查询条件
     * @return 最新一条数据时间
     */
    public Date getLastTime(@Param("params") Map<String, Object> params);

    /**
     * @Title getYearList
     * @Description 获取有生产数据的年份
     * @return 有生产数据的年份
     */
    public List<String> getYearList(@Param("params") Map<String, Object> params);
}
